🎢 Proyecto: PyLand Theme Park
Estado: Confidencial
De: Dirección General de PyLand
Para: Equipo de Desarrollo
Asunto: Nuevo Sistema de Gestión de Colas
Estimados desarrolladores:
Necesitamos modernizar la gestión de nuestras atracciones. Actualmente todo se hace a papel y lápiz, y es un caos. Requerimos un sistema en Python que gestione el flujo de visitantes en el parque.
A diferencia de otras veces, no os diremos cómo programar (qué clases crear), sino qué necesita hacer el sistema. Vosotros sois los expertos en arquitectura (POO).
📝 Requisitos Funcionales
1. Los Visitantes
Nuestro parque recibe a miles de personas. De cada visitante necesitamos saber:
- Su nombre.
- Su edad (importante para zonas infantiles).
- Su altura en cm (vital para la seguridad).
- Si tiene Pase VIP o no (los VIPs no hacen cola).
2. Las Atracciones
Tenemos varias atracciones, pero no todas funcionan igual. Todas tienen un nombre y una capacidad máxima por viaje (ej: en la montaña rusa caben 20 personas por vuelta).
Necesitamos gestionar tres tipos de atracciones:
- Atracciones Estándar: Cualquiera puede entrar.
- Montañas Rusas: Por seguridad, nadie que mida menos de 1.30m puede subir, aunque tenga entrada.
- Zona Infantil: Diseñadas para niños. Nadie mayor de 10 años puede subir.
- Excepción de seguridad: Si el niño mide menos de 100cm, el sistema debe avisar de que "Necesita acompañante", pero le deja pasar.
3. Gestión de Colas y Acceso
El sistema debe permitir que los visitantes intenten entrar a una atracción:
- Si la atracción tiene sitio libre en ese momento (no está llena la cola), el visitante entra.
- IMPORTANTE: Si el sistema detecta que el visitante no cumple los requisitos (altura o edad), debe rechazarlo inmediatamente e imprimir el motivo.
- Gestión de VIPs: Si un visitante tiene pase VIP, no se pone al final de la cola... ¡se pone el primero! (o entra directamente).
4. Funcionamiento
Cada atracción debe tener un mecanismo para "Iniciar Viaje":
- Cuando arranca el viaje, las personas que estaban en la cola "suben" (dejan la cola).
- El sistema debe imprimir quiénes han subido.
🧪 Pruebas Aceptación (Lo que probará el cliente)
El CEO ejecutará un script (main.py) que hará lo siguiente:
- Creará el parque con: una Montaña Rusa ("Dragon Khan"), una atracción infantil ("Tazas") y una normal ("Cine 4D").
- Intentará subir a un niño pequeño en el Dragon Khan (debería fallar).
- Intentará subir a un adulto en las Tazas (debería fallar).
- Creará una cola de gente normal y luego llegará un VIP. Al iniciar el viaje, el VIP debería haber entrado antes que los que llegaron primero.
💡 Consejos para el Equipo de Desarrollo
- Pensad bien cuántas clases necesitáis. ¿Una clase para todo? ¿Herencia?
- ¿Dónde guardaréis a la gente que está esperando? (Pista: Listas).
- ¿Cómo resolver lo de los VIPs? (Pista:
insert(0, ...)vsappend(...)).
¡Esperamos vuestro diseño!